home *** CD-ROM | disk | FTP | other *** search
-
-
-
- qqqquuuueeeeuuuueeee((((DDDD4444)))) qqqquuuueeeeuuuueeee((((DDDD4444))))
-
-
-
- NNNNAAAAMMMMEEEE
- _qqqq_uuuu_eeee_uuuu_eeee - STREAMS queue structure
-
- SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
- _####_iiii_nnnn_cccc_llll_uuuu_dddd_eeee _<<<<_ssss_yyyy_ssss_////_tttt_yyyy_pppp_eeee_ssss_...._hhhh_>>>>
- _####_iiii_nnnn_cccc_llll_uuuu_dddd_eeee _<<<<_ssss_yyyy_ssss_////_ssss_tttt_rrrr_eeee_aaaa_mmmm_...._hhhh_>>>>
- _####_iiii_nnnn_cccc_llll_uuuu_dddd_eeee _<<<<_ssss_yyyy_ssss_////_dddd_dddd_iiii_...._hhhh_>>>>
-
- DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
- A instance of a STREAMS driver or module consists of two _qqqq_uuuu_eeee_uuuu_eeee
- structures, one for upstream (read-side) processing and one for
- downstream (write-side) processing.
-
- UUUUSSSSAAAAGGGGEEEE
- This structure is the major building block of a stream. It contains
- pointers to the processing procedures, pointers to the next queue in the
- stream, flow control parameters, and a list of messages to be processed.
-
- SSSSttttrrrruuuuccccttttuuuurrrreeee DDDDeeeeffffiiiinnnniiiittttiiiioooonnnnssss
- The _qqqq_uuuu_eeee_uuuu_eeee structure is defined as type _qqqq_uuuu_eeee_uuuu_eeee______tttt and contains the following
- members:
-
- _ssss_tttt_rrrr_uuuu_cccc_tttt _qqqq_iiii_nnnn_iiii_tttt _****_qqqq______qqqq_iiii_nnnn_ffff_oooo_;;;; _////_**** _mmmm_oooo_dddd_uuuu_llll_eeee _oooo_rrrr _dddd_rrrr_iiii_vvvv_eeee_rrrr _eeee_nnnn_tttt_rrrr_yyyy _pppp_oooo_iiii_nnnn_tttt_ssss _****_////
- _ssss_tttt_rrrr_uuuu_cccc_tttt _mmmm_ssss_gggg_bbbb _****_qqqq______ffff_iiii_rrrr_ssss_tttt_;;;; _////_**** _ffff_iiii_rrrr_ssss_tttt _mmmm_eeee_ssss_ssss_aaaa_gggg_eeee _iiii_nnnn _qqqq_uuuu_eeee_uuuu_eeee _****_////
- _ssss_tttt_rrrr_uuuu_cccc_tttt _mmmm_ssss_gggg_bbbb _****_qqqq______llll_aaaa_ssss_tttt_;;;; _////_**** _llll_aaaa_ssss_tttt _mmmm_eeee_ssss_ssss_aaaa_gggg_eeee _iiii_nnnn _qqqq_uuuu_eeee_uuuu_eeee _****_////
- _ssss_tttt_rrrr_uuuu_cccc_tttt _qqqq_uuuu_eeee_uuuu_eeee _****_qqqq______nnnn_eeee_xxxx_tttt_;;;; _////_**** _nnnn_eeee_xxxx_tttt _qqqq_uuuu_eeee_uuuu_eeee _iiii_nnnn _ssss_tttt_rrrr_eeee_aaaa_mmmm _****_////
- _vvvv_oooo_iiii_dddd _****_qqqq______pppp_tttt_rrrr_;;;; _////_**** _pppp_oooo_iiii_nnnn_tttt_eeee_rrrr _tttt_oooo _pppp_rrrr_iiii_vvvv_aaaa_tttt_eeee _dddd_aaaa_tttt_aaaa _ssss_tttt_rrrr_uuuu_cccc_tttt_uuuu_rrrr_eeee _****_////
- _uuuu_llll_oooo_nnnn_gggg______tttt _qqqq______cccc_oooo_uuuu_nnnn_tttt_;;;; _////_**** _aaaa_pppp_pppp_rrrr_oooo_xxxx_iiii_mmmm_aaaa_tttt_eeee _ssss_iiii_zzzz_eeee _oooo_ffff _mmmm_eeee_ssss_ssss_aaaa_gggg_eeee _qqqq_uuuu_eeee_uuuu_eeee _****_////
- _uuuu_llll_oooo_nnnn_gggg______tttt _qqqq______ffff_llll_aaaa_gggg_;;;; _////_**** _ssss_tttt_aaaa_tttt_uuuu_ssss _oooo_ffff _qqqq_uuuu_eeee_uuuu_eeee _****_////
- _llll_oooo_nnnn_gggg _qqqq______mmmm_iiii_nnnn_pppp_ssss_zzzz_;;;; _////_**** _ssss_mmmm_aaaa_llll_llll_eeee_ssss_tttt _pppp_aaaa_cccc_kkkk_eeee_tttt _aaaa_cccc_cccc_eeee_pppp_tttt_eeee_dddd _bbbb_yyyy _QQQQ_UUUU_EEEE_UUUU_EEEE _****_////
- _llll_oooo_nnnn_gggg _qqqq______mmmm_aaaa_xxxx_pppp_ssss_zzzz_;;;; _////_**** _llll_aaaa_rrrr_gggg_eeee_ssss_tttt _pppp_aaaa_cccc_kkkk_eeee_tttt _aaaa_cccc_cccc_eeee_pppp_tttt_eeee_dddd _bbbb_yyyy _QQQQ_UUUU_EEEE_UUUU_EEEE _****_////
- _uuuu_llll_oooo_nnnn_gggg______tttt _qqqq______hhhh_iiii_wwww_aaaa_tttt_;;;; _////_**** _hhhh_iiii_gggg_hhhh _wwww_aaaa_tttt_eeee_rrrr _mmmm_aaaa_rrrr_kkkk _****_////
- _uuuu_llll_oooo_nnnn_gggg______tttt _qqqq______llll_oooo_wwww_aaaa_tttt_;;;; _////_**** _llll_oooo_wwww _wwww_aaaa_tttt_eeee_rrrr _mmmm_aaaa_rrrr_kkkk _****_////
- The _qqqq______qqqq_iiii_nnnn_ffff_oooo field contains a pointer to the _qqqq_iiii_nnnn_iiii_tttt(D4) structure
- specifying the processing routines and default values for the queue.
- This field should not be changed by drivers or modules.
-
- The _qqqq______ffff_iiii_rrrr_ssss_tttt field points to the first message on the queue, or is _NNNN_UUUU_LLLL_LLLL if
- the queue is empty. This field should not be changed by drivers or
- modules.
-
- The _qqqq______llll_aaaa_ssss_tttt field points to the last message on the queue, or is _NNNN_UUUU_LLLL_LLLL if
- the queue is empty. This field should not be changed by drivers or
- modules.
-
- The _qqqq______nnnn_eeee_xxxx_tttt field points to the next queue in the stream. This field
- should not be changed by drivers or modules.
-
- The _qqqq______pppp_tttt_rrrr field is a private field for use by drivers and modules. It
- provides a way to associate the driver's per-minor data structure with
- the queue.
-
-
-
-
- PPPPaaaaggggeeee 1111
-
-
-
-
-
-
- qqqquuuueeeeuuuueeee((((DDDD4444)))) qqqquuuueeeeuuuueeee((((DDDD4444))))
-
-
-
- The _qqqq______cccc_oooo_uuuu_nnnn_tttt field contains the number of bytes in messages on the queue
- in priority band 0. This includes normal messages and high priority
- messages.
-
- The _qqqq______ffff_llll_aaaa_gggg field contains a bitmask of flags that indicate different
- queue characteristics. No flags may be set or cleared by drivers or
- modules. However, the following flags may be tested:
-
- _QQQQ_RRRR_EEEE_AAAA_DDDD_RRRR The queue is the read queue. Absence of this flag implies
- a write queue.
-
- The _qqqq______mmmm_iiii_nnnn_pppp_ssss_zzzz field is the minimum packet size for the queue. This is an
- advisory limit specifying the smallest message that can be accepted by
- the queue. It is initially set to the value specified by the _mmmm_iiii______mmmm_iiii_nnnn_pppp_ssss_zzzz
- field in the _mmmm_oooo_dddd_uuuu_llll_eeee______iiii_nnnn_ffff_oooo(D4) structure. This field can be changed by
- drivers or modules.
-
- The _qqqq______mmmm_aaaa_xxxx_pppp_ssss_zzzz field is the maximum packet size for the queue. This is an
- advisory limit specifying the largest message that can be accepted by the
- queue. It is initially set to the value specified by the _mmmm_iiii______mmmm_aaaa_xxxx_pppp_ssss_zzzz field
- in the _mmmm_oooo_dddd_uuuu_llll_eeee______iiii_nnnn_ffff_oooo structure. This field can be changed by drivers or
- modules.
-
- The _qqqq______hhhh_iiii_wwww_aaaa_tttt field is the high water mark for the queue. This specifies
- the number of bytes of data contained in messages on the queue such that
- the queue is considered full, and hence flow-controlled. It is initially
- set to the value specified by the _mmmm_iiii______hhhh_iiii_wwww_aaaa_tttt field in the _mmmm_oooo_dddd_uuuu_llll_eeee______iiii_nnnn_ffff_oooo
- structure. This field can be changed by drivers or modules.
-
- The _qqqq______llll_oooo_wwww_aaaa_tttt field is the low water mark for the queue. This specifies
- the number of bytes of data contained in messages on the queue such that
- the queue is no longer flow-controlled. It is initially set to the value
- specified by the _mmmm_iiii______llll_oooo_wwww_aaaa_tttt field in the _mmmm_oooo_dddd_uuuu_llll_eeee______iiii_nnnn_ffff_oooo structure. This field
- can be changed by drivers or modules.
-
- RRRREEEEFFFFEEEERRRREEEENNNNCCCCEEEESSSS
- _gggg_eeee_tttt_qqqq(D3), _mmmm_oooo_dddd_uuuu_llll_eeee______iiii_nnnn_ffff_oooo(D4), _mmmm_ssss_gggg_bbbb(D4), _pppp_uuuu_tttt_qqqq(D3), _qqqq_iiii_nnnn_iiii_tttt(D4), _ssss_tttt_rrrr_qqqq_gggg_eeee_tttt(D3),
- _ssss_tttt_rrrr_qqqq_ssss_eeee_tttt(D3)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PPPPaaaaggggeeee 2222
-
-
-
-